package lu.med.praxiswahl.wahlumed.client.oprechnungen;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.SwingConstants;

import lu.med.praxiswahl.wahlumed.client.patienten.PatientDataset;
import lu.med.praxiswahl.wahlumed.client.rechnungen.RechnungenDataset;
import lu.med.praxiswahl.wahlumed.client.rechnungen.RechnungenTableModel;
import lu.med.praxiswahl.wahlumed.client.tarif.Tarif;
import lu.med.praxiswahl.wahlumed.client.wclient.Main;
import lu.med.praxiswahl.wahlumed.client.wclient.PatientenSuchmaske;
import lu.med.praxiswahl.wahlumed.client.wclient.PatientenSuchmaskeListener;


/**
 * 
 * @author Lars Holger Roth
 */
public class OPRechnungenUnterPanel extends JPanel implements
	PatientenSuchmaskeListener, ActionListener
{
    private Main dataManager;
    private Tarif tarif;
    private DefaultListModel mo;
    private PatientDataset modelPatient;
    private RechnungenDataset model; // Enth�lt die aktuell zu bearbeitende
    // Rechnung
    private JCheckBox ca, cb, cc, cd, ce;
    private JCheckBox cf, cg, ch, ci;
    private JTextField tf1, tf2, tf3, tf4, tf5;
    private JTextField datum;
    private JList list;
    private JRadioButton modusAktuell, modusBezahlt, modusNichtErstellt;
    private JComboBox moneyOption;
    private OPRechnungenTable t1, t2;
    private OPRechnungenTableModel m1, m2;
    private boolean newRechnung = true;

    public OPRechnungenUnterPanel(Main dataManager, PatientenSuchmaske search)
    {
	super(new BorderLayout());
	JPanel leftPanel, rightPanel, leftOptionsPanel, leftPaymentPanel, leftTablePanel;
	JPanel overall = new JPanel(new BorderLayout());

	search.addSuchmaskeListener(this);

	// Button Leiste mit Funktionsbuttons
	JPanel buttonPanel = new JPanel(new GridLayout(1, 0));
	JButton a, b, c, d, e, f;

	a = new JButton("Aktuell");
	b = new JButton("Bezahlt");
	c = new JButton("Nicht erstellt");
	d = new JButton("Drucken");
	e = new JButton("Speichern");
	f = new JButton("Code Tarif");

	a.addActionListener(this);
	b.addActionListener(this);
	c.addActionListener(this);
	d.addActionListener(this);
	e.addActionListener(this);
	f.addActionListener(this);

	buttonPanel.add(a);
	buttonPanel.add(b);
	buttonPanel.add(c);
	buttonPanel.add(d);
	buttonPanel.add(e);
	buttonPanel.add(f);

	// Linke Seite mit Eingabebereich // ben�tigt oben
	// noch den �blichen Adressbereich
	leftPanel = new JPanel(new BorderLayout());
	leftPanel.setBorder(BorderFactory.createTitledBorder("Eingabemaske"));
	leftOptionsPanel = new JPanel(new GridLayout(1, 0));

	ca = new JCheckBox("Unbezahlt");
	cb = new JCheckBox("Bezahlt");
	cc = new JCheckBox("Zugeschickt");
	cd = new JCheckBox("Im PC");
	ce = new JCheckBox("Nicht erstellt");

	datum = new JTextField();
	datum.setHorizontalAlignment(SwingConstants.RIGHT);
	JPanel datumPanel = new JPanel(new BorderLayout());
	datumPanel.add(new JLabel("Datum:"), BorderLayout.WEST);
	datumPanel.add(datum, BorderLayout.EAST);
	datum.setPreferredSize(new Dimension(100, 0));

	leftOptionsPanel.add(ca);
	leftOptionsPanel.add(cb);
	leftOptionsPanel.add(cc);
	leftOptionsPanel.add(cd);
	leftOptionsPanel.add(ce);

	JPanel leftOptionsPanel2 = new JPanel(new BorderLayout());
	leftOptionsPanel2.add(datumPanel, BorderLayout.WEST);
	leftOptionsPanel2.add(leftOptionsPanel, BorderLayout.CENTER);

	leftPanel.add(leftOptionsPanel2, BorderLayout.NORTH);

	leftPaymentPanel = new JPanel(new GridLayout(1, 0));

	cf = new JCheckBox("Cash");
	cg = new JCheckBox("Karte");

	leftPaymentPanel.add(cf);
	leftPaymentPanel.add(cg);

	JPanel leftPaymentOptionsPanel = new JPanel(new BorderLayout());
	Vector<String> paymentOptions = new Vector<String>();
	paymentOptions.add("Mastercard");
	paymentOptions.add("Visa");
	moneyOption = new JComboBox(paymentOptions);
	moneyOption.setEditable(true);
	leftPaymentOptionsPanel.add(moneyOption, BorderLayout.CENTER);

	leftPaymentPanel.add(leftPaymentOptionsPanel);

	leftPaymentPanel.setBorder(BorderFactory
		.createTitledBorder("Zahlungsoptionen"));

	leftPanel.add(leftPaymentPanel, BorderLayout.SOUTH);

	leftTablePanel = new JPanel(new GridLayout(2, 0));
	int tarifMode = -1;
	if (modelPatient != null)
	{
	    // Es ist bereits ein Patient ausgew�hlt
	    // Beginnt die Versicherungsnummer mit einer Zahl, so
	    // wird der A Tarif verwendet, sonst der B Tarif
	    char zahl = modelPatient.getVersicherungsnummer().charAt(0);
	    if ((zahl == '1') || (zahl == '2') || (zahl == '3')
		    || (zahl == '4') || (zahl == '5') || (zahl == '6')
		    || (zahl == '7') || (zahl == '8') || (zahl == '9')
		    || (zahl == '0'))
	    {
		tarifMode = RechnungenTableModel.TARIF_A;
	    }
	    else
		tarifMode = RechnungenTableModel.TARIF_B;
	}
	m1 = new OPRechnungenTableModel();
	m2 = new OPRechnungenTableModel();
	t1 = new OPRechnungenTable(m1);
	t2 = new OPRechnungenTable(m2);
	JScrollPane sp1, sp2;
	sp1 = new JScrollPane(t1);
	sp2 = new JScrollPane(t2);
	JPanel psp1 = new JPanel(new BorderLayout());
	JPanel psp2 = new JPanel(new BorderLayout());
	psp1.add(sp1, BorderLayout.CENTER);
	tf1 = new JTextField("");
	JPanel psp11, psp12;
	psp11 = new JPanel(new BorderLayout());
	psp12 = new JPanel(new GridLayout(0, 2));
	psp12.add(new JLabel("SOUS-TOTAL:"));
	psp12.add(tf1);
	psp11.add(psp12, BorderLayout.EAST);
	psp1.add(psp11, BorderLayout.SOUTH);

	psp2.add(sp2, BorderLayout.CENTER);
	tf2 = new JTextField("");
	tf3 = new JTextField("");
	tf4 = new JTextField("");
	tf5 = new JTextField("");
	JPanel psp21;
	psp21 = new JPanel(new BorderLayout());
	psp2.add(psp21, BorderLayout.SOUTH);

	leftTablePanel.add(psp1);

	leftPanel.add(leftTablePanel, BorderLayout.CENTER);

	// Rechte Seite mit der Liste verf�gbarer Rechnungen
	JPanel modePanel = new JPanel(new GridLayout(0, 1));
	this.modusAktuell = new JRadioButton("Aktuell");
	// modusAktuell.addActionListener(new TypeActionListener(this));
	this.modusBezahlt = new JRadioButton("Erledigt");
	// modusBezahlt.addActionListener(new TypeActionListener(this));
	this.modusNichtErstellt = new JRadioButton("Nicht erstellt");
	// modusNichtErstellt.addActionListener(new TypeActionListener(this));
	modePanel.add(modusAktuell);
	modePanel.add(modusBezahlt);
	modePanel.add(modusNichtErstellt);
	ButtonGroup mbg = new ButtonGroup();
	mbg.add(modusAktuell);
	mbg.add(modusBezahlt);
	mbg.add(modusNichtErstellt);

	rightPanel = new JPanel(new BorderLayout());
	rightPanel.setBorder(BorderFactory
		.createTitledBorder("Verfügbare Rechnungen"));
	mo = new DefaultListModel();
	// refreshMo();
	list = new JList(mo);
	list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
	// list.addListSelectionListener(this);
	JScrollPane ssp = new JScrollPane(list);
	rightPanel.add(ssp, BorderLayout.CENTER);
	rightPanel.add(modePanel, BorderLayout.NORTH);
	rightPanel.setPreferredSize(new Dimension(150, 0));

	overall.add(rightPanel, BorderLayout.EAST);
	overall.add(buttonPanel, BorderLayout.NORTH);
	overall.add(leftPanel, BorderLayout.CENTER);

	this.add(overall, BorderLayout.CENTER);
    }

    public void actionPerformed(ActionEvent e)
    {

    }

    public void modelChanged(String matricule)
    {

    }
}
